const { koaBody } = require('koa-body');
const path = require('path');
const router = require('./routes');
const { sequelize, Sequelize } = require('./config/db');

const static = require('koa-static');
const mount = require('koa-mount');

const Koa = require('koa');


const app = new Koa();

const loggingMiddleware = require('./middleware/logging');
app.use(loggingMiddleware);

// 设置静态文件目录（假设项目根目录下有 public 文件夹）------------------------------
const staticPath = './uploads';
// 使用 koa-static 中间件
app.use(mount('/api/uploads', static(
  path.join(__dirname, staticPath), // 完整目录路径
  {
    maxage: 1000 * 60 * 60 * 24, // 缓存时间（1天）
    hidden: false,               // 是否允许访问隐藏文件
    index: 'index.html',         // 默认访问的文件名
    gzip: true                  // 开启 gzip 压缩（需配合 .gz 文件）
  }
)));
// -------------------------------------------------------------------------------
app.use(mount('/api/sampledata', static(
  path.join(__dirname, './sampledata'), // 完整目录路径
  {
    maxage: 1000 * 60 * 60 * 24, // 缓存时间（1天）
    hidden: false,               // 是否允许访问隐藏文件
    index: 'index.html',         // 默认访问的文件名
    gzip: true                  // 开启 gzip 压缩（需配合 .gz 文件）
  }
)));

// 初始化数据库连接
sequelize.sync()
  .then(() => console.log('Database connected'))
  .catch(err => console.error('Database connection error:', err));

// 处理文件上传（限制 5MB）
app.use(koaBody({
  multipart: true,
  formidable: {
    uploadDir: path.join(__dirname, 'uploads'),
    keepExtensions: true,
    maxFileSize: 5 * 1024 * 1024 // 5MB
  }
}));

// 路由
app.use(router.routes());


app.listen(8888, () => {
  console.log('Server running on http://localhost:8888');
});

